from django.db import models

class BookInfo(models.Model):  # 主表
    """
        图书表
    """

    # 通过模型类属性定义表的字段
    btitle = models.CharField('图书名称', max_length=20)  # 图书名 通过models.CharField 指定为字符类型
    bpub_date = models.DateField('出版日期')
    # create_time = models.DateField('创建时间', auto_now_add=True)  # auto_now_add保存创建是自动添加时间
    # update_time = models.DateField('更新时间', auto_now=True)  # auto_now 只要更新就自动添加时间
    bread = models.IntegerField('阅读量', default=0)  # default 给字段指定默认值
    bcomment = models.IntegerField('评论量', default=0)
    is_delete = models.BooleanField('逻辑删除', default=0)

    class Meta:
    # 表的控制
            db_table = 'tb_books'  # 指定表的名字
            verbose_name = '图书表'  # 配合Django自带的数据表管理界面进行使用

    def __str__(self):
        return self.btitle

class HeroInfo(models.Model):  # 副表

    GENDER_CHOICES = (
        (0, 'male'),
        (1, 'female')
    )
    hname = models.CharField(max_length=20, verbose_name='名称')
    hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')
    hcomment = models.CharField(max_length=200, null=True, verbose_name='描述信息')
# 关联字段所在的表是副表  所关联的表是主表
    hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE,
verbose_name='图书')  # CASCADE级连删除 删除主表会自动删除副表数据； SET_NULL 删除主表时，副表设置为空 ，该字段必须允许为空null=True；SET_DEFAULT 删除主表时，副表设置为默认值; PROTECT保护级别 删除主表时不允许删除，删除顺序是，先删除副表在删除主表
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_heros'
        verbose_name = '英雄'
